
/*
* 应用程序的启动文件
**/
//加载express模块
    var express = require('express');
//加载模板处理模块（前后端分离）
    var swig = require('swig');
//加载数据库
    var mongoose = require('mongoose');
//加载body-parse用来处理post提交过来的数据
    var bodyParser = require('body-parser')
//加载cookies模块
    var Cookies = require('cookies');
//创建app 应用(相当于Nodejs 中的http.createServer()创建服务器)
    var app =express();

//引入数据模型
var User = require('./models/User');

// 设置静态文件的托管（css ,js ,imgae）
app.use('/public',express.static(__dirname + '/public'))


//配置应用模板；

//定义当前应用所使用的模板引型
app.engine('html',swig.renderFile)
/*
* 第一个参数为：模板引型的名称
* 第二个参数为：解析模板内容的方法
*/

//设置模板文件存放的目录，
app.set('views','./views');
/*
* 第一个参数：必须为views
* 第二个参数为模板文件存放的目录
*/

//注册使用的模板引型
app.set('view engine','html')

/*
*第一个参数必须为view engine
*第二个参数必须与app.engine的方法中定义的模板引型的名称（第一个参数）一致
**/

//在开发过程中，需要取消模板缓存
swig.setDefaults({cache:false});

//bodyparser设置(post提交的数据存在req.body下)
app.use(bodyParser.urlencoded({extended:true}));


//设置cookies
app.use(function (req,res,next) {
    req.cookies = new Cookies(req, res);
    //当用户登录以后再次访问页面的时候,浏览器会把服务返回给我们的cookie给传到服务器
    req.userInfo  = {}; //自定义义个属性让全局都能访问
    //解析cookies信息
    if (req.cookies.get('userInfo')){
        try {
            req.userInfo = JSON.parse(req.cookies.get('userInfo'));
            //获取当前登录用户的类型，是否为管理员（通过isadmin属性来判断）
            User.findById(req.userInfo._id).then(function (userInfo) {
                req.userInfo.isAdmin = Boolean(userInfo.isAdmin);
                next();
            })

        }catch (e){

        }
    }else {
        //console.log(req.userInfo)
        next();
    }

})

// //把一个URL地址和一个或多个函数进行绑定 next 为方法
// app.get('/',function (req,res,next) {
//     //输出内容
//     //res.send('<h1>欢迎光临我的博客</h1>')
//
//     res.render('index')
//     /*
//     * 读取模板文件目录下的指定文件，并返回给客户端；
//     * 第一个参数为：表示模板下的文件；相对于views/index.html
//     * 第二个参数为：传递给模板使用的数据
//     * */
//
// })
//分模块处理(控制器)
app.use('/admin',require('./routers/admin'));
app.use('/api',require('./routers/api'));
app.use('/',require('./routers/main'));

//连接数据库
mongoose.connect('mongodb://localhost:27018/blog',function (err) {
    if (err){
        console.log('数据库连接失败')
        console.log(err)
    }else{
        console.log('数据库连接成功');
        //监听请求
        app.listen(8081);
    }

});




